home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-10-31 | 63.3 KB | 1,883 lines |
- Open Agent Architecture (OAA)
-
- Multiple Component SNMP Agent (MCSA)
-
- SNMP/MCSA/Agent
-
- (Draft)
-
- by
-
- Bill White, et al
-
-
- Version 0.8
-
- 10/30/94
-
-
-
-
- 1.0 Multiple Component SNMP Agent (MCSA) Design Objective
-
- The central design objective of the MCSA agent is to allow
- multiple SNMP agent components from different vendors to interoperate,
- collectively realizing a system's SNMP agent.
-
- The MCSA design defines communication among SNMP agent components
- in system independent, message based component dialogue protocols that
- embody all intercomponent agent operations so they can be defined by
- mandatory RFCs. The design seeks to limit system dependent definitions
- to the specification of the method of intercomponent message exchange,
- mapping a primitive, generic MCSA API abstraction to each system
- platform's specific API by recommended RFCs.
-
-
- 1.1 Multiple Component SNMP Agent (MCSA) Reference Model
-
- A system has one SNMP Agent. This agent is divided into
- components: an SNMP/MCSA/Agent/Master ("Agent/Master") and none or more
- SNMP/MCSA/Agent/SubAgentComponents ("Agent/SubAgentComponent"). Given an
- identical MIB state and SNMP packet, all MCSA agents should respond
- identically and correctly, whatever each MCSA Agent's underlying
- component configuration, and be externally indistinguishable from a
- monolithic agent.
-
- All intercomponent operations, either between Agent/Master and
- Agent/SubAgentComponent or among Agent/SubAgentComponents, are by
- exchange of MCSA Component Messages whose processing is defined by
- system independent, MCSA Component Dialogue Protocols. Intra-agent
- communication among an MCSA/Agent's Master and SubAgentComponents is a
- form of inter-process communication using messages whose medium of
- exchange is a function of the agent's host's system and communication
- configuration.
-
-
- |===============================================|
- | MCSA Generic API Abstraction |
- | for MCSA Message Exchange | (mandatory)
- |===============================================|
- ^ | ^ |
- | | | |
- | | (MCSA Component Dialogue | |
- | | Protocols) | |
- | | | |
- | | (mandatory) | |
- | v | v
- ============== ==============
- | system-API | | system-API | (recommended)
- |=======================| |=======================|
- | SNMP/Agent/Master | | SNMP/Agent/Component-n|(vendor specific)
- |=======================| |=======================|
-
-
- Figure 1 - Multiple Component SNMP Agent Communications
-
-
- 1.2 MCSA Agent/Master
-
- The Agent/Master is a system's end point for all incoming SNMP
- packets; the overseer all SNMP packet processing; the sender of all SNMP
- responses and traps. And, as such, is responsible for the agent's
- compliance with all SNMP protocols. An MCSA agent has one Agent/Master.
-
- The Agent/Master services a known, Agent/Master message queue,
- providing MCSA agent wide services to other Agent/SubAgentComponents
- (i.e. queue management, message forwarding, system up time, resource
- enqueue, component registration, event subscription, etc) as defined in
- the Agent/Master's MCSA Component Dialogue Protocol For <dialogue_type>
- or participating in other Component Message exchanges with
- Agent/SubAgentComponents defined by the Agent/SubAgentComponent's MCSA
- Component Dialogue Protocol. Whenever appropriate, the Agent/Master
- bears the burden of processing and context retention rather than the
- Agent/SubAgentComponents.
-
-
- 1.3 MCSA Agent/SubAgentComponents
-
- Agent/SubAgentComponents provide or obtain services through the
- exchange of Component Messages with the Agent/Master or other
- Agent/SubAgentComponents as defined in the relevant MCSA Component
- Dialogue Protocols (i.e. Agent/SubAgentComponents that send and receive
- packets over a particular transport; Agent/SubAgentComponents that
- support ranges of OIDs). An MCSA agent may have any number of
- Agent/SubAgentComponents.
-
-
- 1.4 MCSA Message Exchange
-
- Each system platform type defines a system dependent mapping of
- the MCSA Generic Message Exchange API abstraction to its
- <system_specific_api> in a recommended RFC - "MCSA Message Exchange API
- For <system_specific>", including the system dependent definition of a
- component, a message queue and the method of message exchange
- realization. The MCSA Agent's Agent/Master and Agent/SubAgentComponents
- declare MCSA Message Queues and exchange MCSA Component Messages via
- their system's implementation of the MCSA Message Exchange. If a system
- has multiple processors, the MCSA Message Exchange must be implemented
- on all processors having MCSA message queues.
-
-
- 1.5 MCSA Hierarchy
-
- Agent/SubAgentComponents and the Agent/Master are the realization
- of the MCSA Component Dialogue Protocols they support. The MCSA
- Component Dialogue Protocols are made up of their Component Message
- definitions. Component Messages are made up of Component Message Fields
- and methods of implementation. Component Message Fields are made up of
- Field Elements and methods of implementation.
-
- MCSA Agent
- |
- |
- |--> Agent/Master (message queue)
- |
- |--> Agent/SubAgentComponent-1 (message queue)
- |
- |--> Agent/SubAgentComponent-n (message queue)
- |
- |
- |--> Component Dialogue Protocol-1
- |
- |--> Component Dialogue Protocol-n
- |
- |
- |--> Component Message-1
- |
- |--> Component Message-n
- |
- |
- |--> Message Field-1
- |
- |--> Message Field-n
- |
- |
- |--> Field Element-1
- |
- |--> Field Element-2
- |
- |--> Field Element-3
-
-
-
- 2.0 MCSA Component Dialogue Protocols Defined:
-
-
- 2.1 MCSA Component Dialogue Protocol For System Time:
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and Agent/SubAgentComponents for obtaining the
- System Up Time from the Agent/Master; obtaining system time; time
- delayed message forwarding; time tick message requests.
-
-
- 2.2 MCSA Component Dialogue Protocol For OID Servers:
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and Agent/SubAgentComponents acting as OID
- servers that support resolution of one or more OID instances. The
- Agent/Master registers all Agent/SubAgentComponents OIDs servers,
- including arbitration for support conflicts and multiple component table
- support such as dynamic assignment of table indices. The Agent/Master
- exchanges Component Messages with Agent/SubAgentComponent/OIDServers to
- process an SNMP packet.
-
-
- 2.3 MCSA Component Dialogue Protocol For Message Queue Services
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and the Agent/SubAgentComponent/MsgQServer for
- registering and locating message queues; sending messages to a message
- queue; registering message types.
-
-
- 2.4 MCSA Component Dialogue Protocol For Master Message Servers
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and Agent/Master/MsgServer that supports the
- registration of components that process Agent/Master Component Messages
- on behalf of the Agent/Master, extending the Agent/Master.
-
-
- 2.5 MCSA Component Dialogue Protocol For OID Query [and Set?]
-
- This Component Dialogue Protocol defines the message exchange to
- allow any Agent/SubAgentComponent to query either another intrasystem
- OID Server or a remote SNMP agent for OID values with either a get or
- getnext request.
-
-
- 2.6 MCSA Component Dialogue Protocol For Traps
-
- This Component Dialogue Protocol defines the message exchange to
- allow any Agent/SubAgentComponent to send an SNMP trap through the
- Agent/Master.
-
-
- 2.7 MCSA Component Dialogue Protocol For Packet Header
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and a Agent/SubAgentComponent/MsgQServer for
- obtaining SNMP packet header information.
-
-
- 2.8 MCSA Component Dialogue Protocol For Transport Servers:
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and Agent/SubAgentComponent/Transport that send
- and receive SNMP packets on behalf of the Agent/Master. [TBD]
-
-
- 2.9 MCSA Component Dialogue Protocol For Resource Naming and Control
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and Agent/SubAgentComponents/Resource that
- supports the naming of and access control to shared resources. [TBD]
-
-
- 2.10 MCSA Component Dialogue Protocol For Event Subscription
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and Agent/SubAgentComponents/Event that
- supports the registration event publishers and subscribers. [TBD]
-
-
-
- 3.0 SNMP/MCSA/Agent API
-
- The MCSA API is a handful of function calls needed to use and
- manage the MCSA Message Exchange. All other intra-agent activity is by
- message.
-
- The MCSA-API is defined at two levels of abstraction:
-
- Generic: a system independent description of MCSA Component Message
- Exchange objects and services, the generic MCSA Message Exchange API
- Abstraction.
-
- System Specific: a mapping of the generic MCSA Message Exchange
- API Abstraction to a platform specific, system dependent specification
- for implementation, producing the behavior defined in the MCSA Message
- Exchange API Abstraction.
-
- Although 'C' and 'C++' language syntax are used to define the MCSA
- Generic Message Exchange API standard and may often be the method for
- implementation of a systems's API, only the resulting operational
- effects, as defined by the MCSA Generic Message Exchange API, are
- mandatory for every MCSA system platform.
-
-
- 3.1 Generic MCSA Message Exchange API Abstraction
-
- Overall, the MCSA Message Exchange converts an MCSA System
- Specific Message Exchange API call into MCSA Message Exchange
- operations: creating and destroying message queues; and, enqueuing and
- dequeueing Component Messages. The MCSA Message Exchange posits that
- byte arrays called messages may be queued to a message queue whose
- server will then process the messages in FIFO order.
-
- Because the MCSA Message Exchange access is through a system
- specific API, the MCSA Message Exchange services are strictly limited to
- those message exchange functions that can not otherwise be supported by
- the message based MCSA Component Dialogue Protocols (i.e. the MCSA
- Component Dialogue Protocol For Message Queue Services).
-
-
- 3.1.1 Creating and Registering Agent/SubAgentComponent Message Queues
-
- Using the MCSA Message Exchange, an Agent/SubAgentComponent
- creates a message queue and obtains a unique QID, a message queue
- handle, from the MCSA Message Exchange by issuing a MsgQCreate API call.
- The MCSA Message Exchange reports to the Agent/Master via
- <mt_MsgQServices><QueueCreate> Component Message that a message queue is
- being created; in turn, the Agent/Master registers the message queue
- through an exchange of messages with the Agent/SubAgentComponent
- registering the message queue, according to the MCSA Component Dialogue
- Protocol For Message Queue Services. The Agent/SubAgentComponent may
- register multiple, system unique, text queue names for a message queue.
- When a message queue is created, only the Agent/Master may send it
- messages until the message queue is registered with the Agent/Master. By
- definition, an Agent/SubAgentComponent instance supports one message
- queue.
-
- It is assumed that the Agent/Master and the implementation of the
- MCSA Message Exchange come into existence at the same time and that the
- Agent/Master message queue is registered with the MCSA Message Exchange,
- a priori, with the queue name "Agent/Master" and a public QID equal to
- 1. In addition, all Component Dialogue Protocol For Message Queue
- Services message types are registered a priori. All other message queues
- must register with the Agent/Master before use.
-
-
- 3.1.2 Sending Component Messages
-
- An Agent/SubAgentComponent sends a Component Message to any
- message queue, including its own message queue or the Agent/Master's
- message queue, by issuing a MsgSend API call.
-
-
- 3.1.3 Locating Message Queues
-
- The MCSA Message Exchange locates a message queue by QID. The
- Agent/Master, using the MCSA Component Dialogue Protocol For Message
- Queue Services, supports message queue lookup by first/next message
- queue or by MsgQueueTextName.
-
-
- 3.1.4 Destroying Message Queues
-
- The Agent/Master will continue to forward encapsilated Component
- Messages to a registered message queue until the Agent/SubAgentComponent
- issues a MsgQDestroy call to the MCSA Message Exchange API causing the
- MCSA Message Exchange to send to the Agent/Master an
- <mt_MsgQServices><MessageQueueDestroy> Component Message for that
- message queue according to the MCSA Component Message Dialogue Protocol
- For Message Queue Services.
-
-
- 3.1.5 Servicing a Message Queue
-
- The Agent/Master and Agent/SubAgentComponents are message queue
- servers that process the Component Messages queued to their message
- queue in FIFO order by dispatching their queue server logic after
- issuing a MsgGet API call. The message is processed according the MCSA
- Component Dialogue Protocol that defines the message. While the dispatch
- of queue server logic is a MCSA Message Exchange operation, the
- execution of the queue server logic to process the message is not.
-
-
- 3.1.6 Message Queue Profile
-
- The message queue's profile is not maintained by the MCSA Message
- Exchange itself. Instead, every message queue server sends, upon
- receiving a <mt_MsgQServices><MessageTypes> message, a
- <mt_MsgQServices><MessageTypesRsp> message(s) listing the message types
- it supports according to the MCSA Component Message Dialogue Protocol
- For Message Queue Services. A list of the message queue's registered
- names can be obtained sending a <mt_MsgQServices><MessageQueueNameList>
- message to the Agent/Master.
-
-
- 3.1.7 Message Type Scope
-
- All Component Messages have a message type defined by the relevant
- MCSA Component Dialogue Protocol or are dynamically assigned by the
- Agent/Master through the MCSA Component Dialogue Protocol For Message
- Queue Services and are unique throughout the MCSA/Agent. Each message
- type is uniquely defined within the MCSA Message Exchange and applies to
- all message queues, allowing Component Messages from any Component
- Message Dialogue Protocol to be serviced by the same message queue.
-
-
- 3.1.8 Message And Response Identification
-
- When a message is sent by the MsgSend, a unique message id is
- generated by the MCSA Message Exchange for the message. This message id
- is placed in the <mt_MsgQServices><MsgForward> Component Message by the
- MCSA Message Exchange and is also returned by the MsgSend function to
- the caller. If the encapsilated message is later forwarded by the
- Agent/Master to the destination queue, the Agent/Master places the
- message id into the unencapsulated message before queuing it to the
- destination message queue.
-
- The message id is later used to identify any responses by the
- placing the message id into the message response id field of the
- responding message(s).
-
-
- 3.1.9 Served Message Queues
-
- When a message queue is created and server logic is provided, the
- message queue is a served message queue. When a message is queued to a
- served message queue, the pfnQueueServerLogic is eventually dispatched
- by the MCSA Message Exchange to service the message.
-
-
- 3.1.10 Utility Message Queues
-
- When a message queue is created and no server logic is provided,
- the message queue is a utility message queue. The intended use of a
- utility message queues by either the Agent/Master or an
- Agent/SubAgentComponent is for holding messages within the component. An
- Agent/SubAgentComponent may have multiple utility message queues.
-
-
- 3.1.11 Authentication
-
- MCSA Message Exchange supports authentication of message queue
- controlling interface calls with the user's queue creator
- identification, the private QID.
-
-
-
- 3.1.12 Multiple Processor Discribution
-
- If a system's MCSA Agent is distributed across multiple processors
- which make up the system, then an instance of the MCSA Message Exchange
- must reside on each processor supporting MCSA message queues. It is
- within the distributed, platform specific MCSA Message Exchange that
- inter-processor message exchange takes place, supporting system wide,
- MCSA message queue access as required by the MCSA Generic Message
- Exchange Abstraction. The Agent/Master supports its message queue on a
- processor and any Agent/SubAgentComponent instance supports one message
- queue on one processor.
-
- 3.2 MCSA Message Exchange Generic API
-
- Every implementation of an SNMP/MCSA/Agent provides the effect of
- the following functions:
-
-
- 3.2.1 MsgQCreate
-
- QID MsgQCreate ((* pfnQueueServerLogic) (MSG *pMsg));
-
- MsgQCreate creates and registers the component's message queue
- with the MCSA Message Exchange. The returned its private message queue
- id (QID) is also forwarded by the MCSA Message Exchange via a
- <mt_MsgQServices><QueueCreate> message, notifying the Agent/Master of
- the new message queue's creation. The Agent/Master then registers the
- QID according the MCSA Message Exchange Dialogue Protocol For Message
- Queue Services.
-
- If the pfnQueueServerLogic is NULL, the message queue is not
- serviced and is a utility queue; else, pfnQueueServerLogic services all
- messages sent to the message queue.
-
- The QID returned is the private QID known only to the MsgQCreate
- issuer. And is used only as required by the MsgQDestroy, MsgQCheck,
- MsgQServe and MsgSend functions for authentication. This private QID is
- mapped to a public QID by the MCSA Message Exchange when using the
- message queue's QID (i.e. source and destination addresses in a
- message). Only the MCSA Message Exchange or its creator may use the
- private QID. The Agent/Master, as an authenticated component, may delete
- message queues using its private QID and the subject message queue's
- public QID.
-
-
- 3.2.2 MsgQDestroy
-
- MsgQDestroy (QID qidMessageQueue,
- QID qidMaster);
-
- MsgQDestroy destroys a message queue identified by the private
- qidMessageQueue. If qidMessageQueue is a served message queue, the MCSA
- Message Exchange sends a <mt_MsgQServices><QueueDestroy> message to the
- Agent/Master. The Agent/Master processes the request according to the
- MCSA Component Dialogue Protocol For Message Queue Services, returning
- all unprocessed messages in the sending message queue and unregistering
- the message queue. In addition, the MCSA Message Exchange performs the
- appropriate destroy functions for the QID within any MCSA Message
- Exchange maintained context. The qidMaster is NULL unless the caller is
- the Agent/Master, then it is the Agent/Master's private QID and the
- qidMessageQueue is the subject message queue's public QID.
-
- The MCSA Message Exchange dispatches the pfnQueueServerLogic of a
- served message queue with a NULL MSG pointer, indicating the message
- queue has been destroyed. Once the MsgQDestroy returns to the caller,
- the message queue can no longer be accessed by any
- Agent/SubAgentComponent. Whether the MsgQDestroy returns to the caller
- before or after the MCSA Message Exchange dispatches the
- pfnQueueServerLogic of the served message queue is implementation
- dependent. Returns 0 if success; else, no such queue.
-
-
- 3.2.3 MsgQCheck
-
- MsgQCheck (QID qidMessageQueue);
-
- The MsgQCheck returns the number of messages in the message queue
- identified by qidMessageQueue. If the qidMessageQueue is not valid, the
- value all ones is returned.
-
-
- 3.2.4 MsgQServe
-
- MsgQServe (QID qidMessageQueue);
-
- The MsgQServe causes a served message queue's pfnQueueServerLogic
- to be given control, whenever the next message is available in the
- message queue. Each MsgQServe call services one message. Returns 0 if
- request accepted; else, bad qidMessageQueue. Whether the MsgQServer
- returns only after a message is processed or immediately is system
- dependent.
-
- When the message queue is destroyed, the pfnQueueServerLogic is
- dispatched with the MSG *pointer equal to NULL if a MsgQServe request is
- outstanding when the message queue is destroyed. If the message queue is
- destroyed and then a MsgQServe is issued against the message queue, a
- bad qidMessageQueue indication is returned.
-
-
- 3.2.5 MsgCreate
-
- MSG *MsgCreate (int nMaxMessageLength);
-
- Creates a message with all required header fields, ready to accept
- additional fields. Returns MSG * pointing to the message if OK; else,
- NULL.
-
-
- 3.2.6 MsgDestroy
-
- MsgDestroy (MSG *pMsg);
-
- Destroys a Component Message by changing the message's signature
- field to another value, preventing it from being processed as a message
- by the MCSA Message Exchange. Returns 0 if ok; else, not a Component
- Message.
-
-
- 3.2.7 MsgSend
-
- MSGID MsgSend (MSG *pMsg, QID qidSourceQueue);
-
- The MsgSend sends a message, pointed to by pMsg, to the message
- queue named in the message's destination QID, and returns a MCSA Message
- Exchange MSGID for the message sent. The MCSA Message Exchange places
- the MSGID and the public qidSourceQueue into the message before
- forwarding it.
-
- If the destination message queue is a served queue and the sender
- is an Agent/SubAgentComponent, the MCSA Message Exchange's API MsgSend
- encapsulates the Component Message into a <mt_MsgQServices><MsgForward>
- Component Message that it queues to the Agent/Master's message queue to
- be forwarded by the Agent/Master. Only the Agent/Master may send a
- message to a served message queue directly.
-
- If the destination message queue is a utility message queue, the
- MCSA Message Exchange's API MsgSend enqueues the Component Message
- directly into the utility message queue.
-
-
- 3.2.8 MsgGet
-
- MSG * MsgGet (QID qidMessageQueue);
-
- The MsgGet dequeues a message from a utility message queue
- identified by qidMessageQueue. A NULL message pointer is returned if no
- message is in the qidMessageQueue. If qidMessageQueue is not a utility
- queue, all ones is returned.
-
-
-
- 4.0 Message Parsing [Is this essential?]
-
- FieldCreate ();
-
- FieldGetNext ();
-
- FieldAdd ();
-
- FieldFind ();
-
- FieldDestroy ();
-
- ElementGet ();
-
- ElementSet ();
-
-
-
- 5.0 MCSA Inter-Component Message
-
- MCSA Component Messages are arrays of contiguous bytes organized
- into message fields. Each message field has the following field
- elements, in order:
-
- FieldType: identifies the type of field. Every FieldType is unique
- within the scope of a message's definition. Required FieldTypes common
- to all messages have the same FieldType value in all messages as
- possible.
-
- FieldLen: gives the length of the FieldData element. If you add
- the FieldLen to the address of the first byte of the field's FieldData,
- the result points to the next message field, if any.
-
- FieldData: contains 0 to n bytes of data where n is FieldLen
- value. A field is NULL when FieldData contains 0 bytes.
-
-
- 5.1 Message Header Fields
-
- Each MCSA Component Message has a set of required message header
- fields that determines how each message is constructed and parsed. The
- following fields always appear at the beginning of every message, in
- order.
-
-
- 5.1.1 fl_Message_Key_Signature Field
-
- FieldType: <fl_Message_Key_Signature> (sizeof (BYTE))
- FieldLen: 2 (sizeof (BYTE))
- FieldData: the characters "CM" (sizeof (BYTE * 2))
-
- This field is the message signature field. This is the only field
- in Component Messages that is always the same. Any expected message not
- having a correct fl_Message_Key_Signature field is in error and can not
- be processed as a Component Message by the MCSA Message Exchange.
-
-
- 5.1.2 fl_Message_Key_FieldType_Len Field
-
- FieldType: <fl_Message_Key_FieldType_Len> (sizeof (BYTE))
- FieldLen: 1 (sizeof (BYTE))
- FieldData: the size of the FieldType (sizeof (BYTE))
-
- This field gives the length of the FieldType element for all
- fields that follow in this message.
-
-
- 5.1.3 fl_Message_Key_FieldLen_Len Field
-
- FieldType: <fl_Message_Key_FieldLen_Len>
- FieldLen: 1 (sizeof (BYTE))
- FieldData: size of the FieldLen (sizeof (BYTE))
-
- This field gives the length of the FieldLen element for all fields
- that follow in this message.
-
-
- 5.1.4 fl_Message_Type Field
-
- FieldType: <fl_Message_Type>
- FieldLen: variable
- FieldData: this message's type.
-
- The MCSA Message Exchange wide, unique message type defined by a
- MCSA Component Dialogue Protocol and used to map the message to its own
- server logic within the pfnQueueServerLogic function.
-
- A message type has a message type name that is represented in text
- in the format <DefiningDialogueProtocolName><MessageName> as in
- "<mt_MsgQServices><QueueCreate>", where "<mt_MsgQServices>" is the
- defining MCSA Message Dialogue Protocol name, in this case the MCSA
- Message Exchange Dialogue Protocol For Message Queues and
- "<QueueCreate>" is the message name. The notation "<><QueueCreate>"
- means the message's protocol is within current dialogue protocol type
- definition.
-
- Except for Component Dialogue Protocol For Message Queue Services
- message types, all message types must be registered before they are used
- as a Component Message's type.
-
-
- 5.1.5 fl_Message_Length Field
-
- FieldType: <fl_Message_Length>
- FieldLen: variable
- FieldData: the message length
-
- The <fl_Message_Length> is the length of a Component Message. If
- you add the <fl_Message_Length> to the address of the start of message
- (first byte of the <fl_Message_Key_Signature> field), you would point to
- the first byte pass the end of the message. As fields are added and
- deleted, the <fl_Message_Length> value changes.
-
-
- 5.1.6 fl_Message_Id Field
-
- FieldType: <fl_Message_Id>
- FieldLen: variable
- FieldData: message id.
-
- The <fl_Message_Id> is the unique message id for a message
- instance. The MCSA Message Exchange sets the message id value when a
- MsgSend is issued.
-
-
- 5.1.7 fl_Message_Id_Rsp Field
-
- FieldType: <fl_Message_Id_Rsp>
- FieldLen: variable
- FieldData: the response id
-
- The <fl_Message_Id_Rsp> is the response id of the message,
- identifying the <fl_Message_Id> of the message being responded to; NULL
- if this message is not a response message.
-
-
- 5.1.8 fl_Message_Destination Field
-
- FieldType: <fl_Message_Destination>
- FieldLen: variable
- FieldData: the destination QID of the message
-
- The <fl_Message_Destination> is the destination QID of the
- message.
-
-
- 5.1.9 fl_Message_Source Field
-
- FieldType: <fl_Message_Source>
- FieldLen: variable
- FieldData: the source QID of the message
-
- The <fl_Message_Source> is the public QID of the message named by
- the qidSourceQueue of the MsgSend. If the <fl_Message_Source> is zero,
- then the source of the message was a system entity that does not service
- a message queue and may not be sent a response. (i.e. an interrupt
- handler, allowing instrumentation to communicate with the MCSA/Agent)
-
-
- 5.2 Non Header Message Fields
-
- Any additional field in a Component Message is defined by the
- message's MCSA Message Exchange Dialogue Protocol.
-
-
-
- 6.0 MCSA Component Dialogue Protocol For Message Queue Services
-
- The Message Queue Services protocol, <mt_MsgQServices>, describes
- the message exchange by which the Agent/Master provides message queue
- management services for Agent/SubAgentComponents that augment the
- minimum queue services supported by the MCSA Message Exchange through
- its API. The MCSA Component Dialogue Protocol For Message Queue Services
- message types exist a priori and the value is indicated by the notation
- (n) following the message type name (i.e.
- <mt_MsgQServices><QueueCreate>(1) indicates message type value of 1.
-
- The following message definitions include only non header field
- definitions. Messages may or may not have fields other than message
- header fields. Please note: often in message definitions, fields are
- repeated in the response message even though they may also be in the
- original message which is identified by <fl_Message_Id_Rsp> field. This
- repetition is designed to aid the Agent/SubAgentComponent's context
- retention.
-
- Within the context of the protocol definition, "<><QueueCreate>"
- is equivalent to "<mt_MsgQServices><QueueCreate>".
-
-
- 6.1 Message Type: <mt_MsgQServices><QueueCreate>(1)
-
- The MCSA Message Exchange sends this message to the Agent/Master
- when a MsgQCreate API call is made by a system component. The message's
- <fl_Message_Source> contains the QID of the created message queue. The
- Agent/Master responds by sending a <><QueueRegisterRequest> Component
- Message to the QID of the just created message queue.
-
-
- 6.2 Message Type: <mt_MsgQServices><QueueRegisterRequest>(2)
-
- This message is sent by the Agent/Master and requests that the
- queue's Agent/SubAgentComponent respond by sending a
- <><QueueRegisterName> Component Message giving a message queue text name
- under which the Agent/SubAgentComponent wishes to register the message
- queue.
-
-
- 6.3 Message Type: <mt_MsgQServices><QueueNameRegister>(3)
-
- FieldType: <fl_MsgQTextName>
- FieldLen: variable
- FieldData: null terminated text queue name
-
- This message is sent by the Agent/SubAgentComponent to the
- Agent/Master to register a queue text name under the message's source
- QID. The message queue server must respond at least once to the
- <><QueueRegisterRequest> message with this message or the message
- queue's QID is not registered with the Agent/Master. A message queue may
- register with no text name by responding with a NULL <fl_MsgQTextName>.
- This message may be sent again and again to register additional message
- queue text names for the source QID message queue.
-
- In the <fl_MsgQTextName> FieldData, the notation "*" returns a
- unique queue name selected by the Agent/Master; the notation
- "<some_text>*" deletes the "*" and concatenates, to the remaining
- <fl_MsgQTextName> string, a variable length appendage which makes the
- queue name unique among all registered queue names.
-
-
- 6.4 Message Type: <mt_MsgQServices><QueueNameRegisterRsp>(4)
-
- FieldType: <fl_MsgQTextName>
- FieldLen: variable
- FieldData: null terminated text queue name
-
- FieldType: <fl_MsgQTextNameRegistered>
- FieldLen: variable
- FieldData: null terminated text queue name
-
- This message is sent by the Agent/Master to the
- Agent/SubAgentComponent. It returns the queue text name registered under
- the destination QID.
-
-
- 6.5 Message Type: <mt_MsgQServices><QueueNameList>(5)
-
- FieldType: <fl_QID>
- FieldLen: 4
- FieldData: target message queue's QID.
-
- This message requests the Agent/Master respond with
- <><QueueNameListRsp> message that lists the message queue text names
- registered under the <fl_QID>.
-
-
- 6.6 Message Type: <mtMsgQServices><QueueNameListRsp>(6)
-
- FieldType: <fl_QID>
- FieldLen: 4
- FieldData: target message queue's QID.
-
- FieldType: <fl_MsgQTextName>
- FieldLen: variable
- FieldData: null terminated text queue name
-
- (repeated n times)
-
- This message is sent by the Agent/Master to the AgentComponent
- listing all message queue text names a message queue under which it is
- registered. The complete list may be in one or more messages sent in
- reply. The end of item list is indicated by a NULL <fl_MsgQTextName> in
- the last response message.
-
-
- 6.7 Message Type: <mt_MsgQServices><QueueNameFind>(7)
-
- FieldType: <fl_MsgQName>
- FieldLen: variable
- FieldData: null terminated message queue text name to find.
-
- FieldType: <fl_CurrentQueue>
- FieldLen: 4
- FieldData: current QID in list.
-
- This message requests the Master/Agent respond with a
- <><QueueNameFindRsp> message returning the QID of the message queue
- whose name matches the search queue name, or NULL if no registered
- message queue had that name. If the fl_CurrentQueue is NULL, the search
- begins from the beginning of the registered message queue set. If the
- <fl_MsgQName> is NULL or "*", the next QID in the registered set is
- found. Wild card notation (*,?) is supported and returns the first
- instance found to satisfy the search argument.
-
-
- 6.8 Message Type: <mt_MsgQServices><QueueNameFindRsp>(8)
-
-
- FieldType: <fl_MsgQName>
- FieldLen: variable
- FieldData: null terminated message queue text name to find.
-
- FieldType: <fl_FoundQID>
- FieldLen: 4
- FieldData: QID of found message queue.
-
- This message is sent by the Master/Agent to the
- Agent/SubAgentComponent in response to a <><QueueNameFind> message.
-
-
- 6.9 Message Type: <mt_MsgQServices><QueueDestroy>(9)
-
- FieldType: <fl_MsgQID>
- FieldLen: 4
- FieldData: target message queue's QID.
-
- This message is sent by the MCSA Message Exchange, in response to
- a MsgQDestroy API call, to the Agent/Master to delete the message queue
- from the Agent/Master's set of registered message queues. Any Component
- Messages remaining in the message queue are returned to the message
- source by the Agent/Master, then all contexts within the Agent/Master
- for this QID are terminated.
-
-
- 6.10 Message Type: <mt_MsgQServices><MessageReturn>(10)
-
- FieldType: <fl_MsgReturnReason>
- FieldLen: 1
- FieldData: return reason code (1 = message queue does not exist
- 2 = message queue destroyed
- 3 = msg type not supported)
-
- FieldType: <fl_MsgReturned>
- FieldLen: variable
- FieldData: encapsilated message
-
- This message is sent to the message sender if the message can not
- be processed.
-
-
- 6.11 Message Type: <mt_MsgQServices><MessageForward>(11)
-
- FieldType: <fl_MsgToBeForwarded>
- FieldLen: variable
- FieldData: encapsilated message
-
- This message is sent by the MCSA Message Exchange to the
- Agent/Master in response to a MsgSend API call by the
- Agent/SubAgentComponent. The Agent/Master checks the destination QID of
- the encapsilated message. If the QID is a registered message queue, the
- encapsilated message is forwarded to the destination QID message queue.
- If the destination QID is the Agent/Master itself, the message is
- processed by the Agent/Master. If the encapsilated message is not
- supported by the message queue, that is it contains a message type can
- not or should not be queued to the destination QID message queue, the
- encapsilated message is returned to the source QID message queue with a
- <><MessageReturn> message.
-
- [The following message_type_support messages are intended to support the
- coexistence of both protocol defined message types and Ad Hoc message
- types. As in many parts of this document, there should be a better
- solution than the one proposed; I just could not think of it.]
-
- 6.12 Message Type: <mt_MsgQServices><SystemMessageTypesRegister>(12)
-
- FieldType: <fl_MsgTypeName>
- FieldLen: variable
- FieldData: text name of a message type to be registered
-
- FieldType: <fl_MsgTypeType>
- FieldLen: variable
- FieldData: message type to be registered
-
- This message is sent by an Agent/SubAgentComponent to the
- Agent/Master to dynamically obtain message types, including those
- defined in mandatory RFCs. The registration message is compared against
- a registered message type list maintained by the Agent/Master, each list
- item consisting of a <fl_MsgTypeName> and <fl_MsgTypeType>.
-
- If neither the message's <fl_MsgTypeName> nor <fl_MsgTypeType> are
- in any Agent/Master's message type list entries, a list entry is
- created, registering the message type. If both the message's
- <fl_MsgTypeName> and <fl_MsgTypeType> are in the same list entry, the
- response indicates the message type is "already registered".
-
- If the message's <fl_MsgTypeName> is not in the message type list
- and the message's <fl_MsgTypeType> is zero, the <fl_MsgTypeName> and a
- <fl_MsgTypeType>, dynamically assigned by Agent/Master, are registered,
- returning the <fl_MsgTypeType> and a response status of "ok". If the
- message's <fl_MsgTypeName> is in the message type list and the message's
- <fl_MsgTypeType> is zero, the <fl_MsgTypeType> is returned with a status
- of "already registered".
-
- Message types defined in mandatory RFCs are always registered with
- their RFC defined <fl_MsgTypeName>; Ad Hoc message types of Ad Hoc
- protocols, not defined in mandatory RFCs, are always proposed
- arbitrarily. The first character of an RFC defined name is "<" and the
- last character is ">"; Ad Hoc message type names may not have these
- first and last characters. Ad Hoc message type names, hopefully, migrate
- to RFC defined name space with the prefix "<" and suffix ">", so that
- one, Ad Hoc name, predicts the other, RFC defined later.
-
- <mt_MsgQServices> message types are registered a priori at the
- startup of the MCSA Message Exchange.
-
-
- 6.13 Message Type: <mt_MsgQServices><MessageTypeRegistrationRsp>(13)
-
- FieldType: <fl_Status>
- FieldLen: n bytes
- FieldData: return status 0 = ok;
- 1 = already registered
- 2 = message type in use
- 3 = message name in use
- 4 = syntax error
-
- FieldType: <fl_MsgTypeName>
- FieldLen: variable
- FieldData: text name of a message type to be registered
-
- FieldType: <fl_MsgTypeType>
- FieldLen: variable
- FieldData: message type dynamically assigned
-
- This message is sent by the Agent/Master to
- Agent/SubAgentComponent in response to a
- <><SystemMessageTypeRegistration> message. The status "syntax error"
- means the <><SystemMessageTypeRegistration> message fields were
- incorrect.
-
-
- 6.14 Message Type: <mt_MsgQServices><MessageTypeFindName>(14)
-
- FieldType: <fl_MsgTypeType>
- FieldLen: variable
- FieldData: message type
-
- Message sent by Agent/SubAgentComponent to Agent/Master to locate
- a message type by name.
-
-
- 6.15 Message Type: <mt_MsgQServices><MessageTypeFindNameRsp>(15)
-
- FieldType: <fl_MsgTypeType>
- FieldLen: variable
- FieldData: message type
-
- FieldType: <fl_MsgTypeName>
- FieldLen: variable
- FieldData: text name of a message type to be registered
-
- If the FieldData is NULL, the name was not found in the
- Agent/Master's message type list.
-
-
- 6.16 Message Type: <mt_MsgQServices><MessageTypeFindType>(16)
-
- FieldType: <fl_MsgTypeName>
- FieldLen: variable
- FieldData: text name of a message type to be registered
-
- Message sent by Agent/SubAgentComponent to Agent/Master to locate
- a message name by type.
-
-
-
- 6.17 Message Type: <mt_MsgQServices><MessageTypeFindTypeRsp>(17)
-
- FieldType: <fl_MsgTypeName>
- FieldLen: variable
- FieldData: text name of a message type to be registered
-
- FieldType: <fl_MsgTypeType>
- FieldLen: variable
- FieldData: message type
-
-
- 6.18 Message Type: <mt_MsgQServices><QueueMessageType>(18)
-
- This message is sent to any message queue server to obtain the
- message types this message queue services.
-
-
- 6.19 Message Type: <mt_MsgQServices><QueueMessageTypesRsp>(19)
-
- FieldType: <fl_MsgType>
- FieldLen: variable
- FieldData: a message type supported
-
- (repeated n times)
-
- This message is sent in response to a <><QueueMessageTypes>
- message by the message queue server. The complete list may be in one or
- more messages sent in reply. The end of item list is indicated by a null
- message type in the last response message.
-
-
- 6.20 Message Type: <mt_MsgQServices><QueueMessageTypesChange>(20)
-
- This message is sent by an Agent/SubAgentComponent to the
- Agent/Master to indicate that message registered types are now supported
- or no longer supported by the Agent/SubAgentComponent's message queue.
- The Agent/Master reacts to this message by sending a
- <><QueueMessageTypes> message to the Agent/SubAgentComponent queue
- server to obtain the message types this message queue supports.
-
-
- 6.21 Message Type: <mt_MsgQServices><PublicQIDGet>(21)
-
- This message is sent by an Agent/SubAgentComponent to the
- Agent/Master to get the message queue's public QID.
-
-
- 7.0 MCSA Message Dialogue Protocol For Time
-
- This protocol provides an Agent/SubAgentComponent with time
- services.
-
-
- 7.1 Message Type: <mt_SystemTime><SystemUpTime>
-
- This message is sent by a Agent/SubAgentComponent to the
- Agent/Master to obtain the SystemUpTime.
-
-
- 7.2 Message Type: <mt_SystemTime><SystemUpTimeRsp>
-
- FieldType: <fl_SystemUpTime>
- FieldLen: variable
- FieldData: system up time
-
- Message sent by the Agent/Master to the Agent/SubAgentComponent or
- Agent/Master in response to a <><SystemUpTime> message.
-
-
- 7.3 Message Type: <mt_SystemTime><SystemTimeCurrent>
-
- This message requests the Agent/Master's current time be sent in
- reply.
-
-
- 7.4 Message Type: <mt_SystemTime><SystemTimeCurrentRsp>
-
- FieldType: <fl_SystemCurrentTime>
- FieldLen: variable
- FieldData: current system time
-
- This message is a response to a <><SystemTimeCurrent> message and
- returns the current Agent/Master's system time.
-
-
- 7.5 Message Type: <mt_SystemTime><ForwardAtTime>
-
- FieldType: <fl_SystemTime>
- FieldLen: variable
- FieldData: system up time
-
- FieldType: <fl_encapsilated_message>
- FieldLen: variable
- FieldData: first byte of the encapsilated message
-
- This message sets a time when to forward the encapsilated message
- to its destination of QID.
-
-
- 7.6 Message Type: <mt_SystemTime><TickRequest>
-
- FieldType: <fl_TickInterval>
- FieldLen: variable
- FieldData: time interval for tick.
-
- FieldType: <fl_TickId>
- FieldLen: variable
- FieldData: id of tick requested.
-
- This message is sent by any queue server requesting a
- <><TickRequestRsp> message at the interval specified until the receipt
- of a <><TickRequestEnd> message.
-
-
- 7.7 Message Type: <mt_SystemTime><TickRequestRsp>
-
- FieldType: <fl_TickInterval>
- FieldLen: variable
- FieldData: time interval for tick.
-
- FieldType: <fl_TickId>
- FieldLen: variable
- FieldData: Id of tick request
-
- This message is sent by the Agent/Master to the tick requestor's
- message queue each fl_TickInterval until the receipt of a <><TIME
- tTickRequestEnd> message.
-
-
- 7.8 Message Type: <mt_SystemTime><TickRequestEnd>
-
- FieldType: <fl_TickId>
- FieldLen: variable
- FieldData: Id of tick request
-
- This message is sent by the tick requestor to stop the
- <><TickRequestRsp> messages.
-
-
-
- 8.0 MCSA Message Dialogue Protocol For OID Server
-
- This protocol allows an Agent/SubAgentComponent, the
- Agent/SubAgentComponent/OIDServer, to support ranges of OIDs for the
- Agent/Master's processing of get, getnext, getblk and set SNMP packets.
-
-
- 8.1 Message Type: <mt_OIDServer><OIDRangeRegister>
-
- FieldType: <fl_OIDRangeFirst>
- FieldLen: variable
- FieldData: lowest possible OID supported
-
- FieldType: <fl_OIDRangePast>
- FieldLen: variable
- FieldData: lowest possible OID past the last supported OID.
-
- This message is sent by an Agent/SubAgentComponent/OIDServer to
- the Agent/Master to register its support for a range of OIDs. The
- Agent/SubAgentComponent/OIDServer may issue many <><OIDRangeRegister>
- messages to try to establish a supported range and it may support many
- ranges.
-
-
- 8.2 Message Type: <mt_OIDServer><OIDRangeRegisterRsp>
-
- FieldType: <fl_OIDRangeId>
- FieldLen: variable
- FieldData: First supporting OID
-
- This message is sent by an Agent/Master to the
- Agent/SubAgentComponent/OIDServer to respond to the <><OIDRangeRegister>
- message. Returns the <fl_OIDRangeId> of the supported range or NULL, if
- error.
-
-
- 8.3 Message Type: <mt_OIDServer><OIDRangeEnd>
-
- FieldType: <fl_OIDRangeId>
- FieldLen: variable
- FieldData: First supporting OID
-
- This message is sent by an Agent/SubAgentComponent/OIDServer to
- the Agent/Master to end its support for a range of OIDs.
-
-
- 8.4 Message Type: <mt_OIDServer><OIDIndex>
-
- FieldType: <fl_OID>
- FieldLen: variable
- FieldData: requested OID needing index
-
- This message is sent by the Agent/SubAgentComponent/OIDServer to
- the Agent/Master requesting the Agent/Master generate an unique index
- value to replace the last element of the requested OID, a zero. (i.e.
- the request OID seeks an Agent/Master arbitrated, unique index to
- replace the zero in "1.5.5.5.5.0".
-
- It is the responsibility of the Agent/SubAgentComponent/OIDServer
- to know its objects and to ask for an index where needed. The
- Agent/Master keeps a list of the currently assigned indices as arbitrary
- values in response to Agent/SubAgentComponent requests. Indices are
- obtained for shared tables prior to issuing a <><OIDRangeRegister>
- message.
-
-
- 8.5 Message Type: <mt_OIDServer><OIDIndexRsp>
-
- FieldType: <fl_OIDRangeId>
- FieldLen: variable
- FieldData: indexed OID returned.
-
- This message is sent by the Agent/Master to the
- Agent/SubAgentComponent/OIDServer in reply to a <><OIDIndex> message,
- returning the Agent/Master generated index value for the last element
- the requested OID, replacing the zero. (i.e. the response returns an
- Agent/Master arbitrated, uniquely indexed OID, replacing the zero in
- "1.5.5.5.5.0" with the arbitrated index and returning the indexed OID,
- as in "1.5.5.5.5.3" for the selected index value of "3").
-
-
- 8.6 Message Type: <mt_OIDServer><PacketProcessingStart>
-
- FieldType: <fl_PacketVersion>
- FieldLen: variable
- FieldData: 1 = SNMPv1 and 2 = SNMPv2
-
- FieldType: <fl_PacketCurrentView>
- FieldLen: variable
- FieldData: the bit representation of the current view.
-
- FieldType: <fl_PacketTemporalDomain>
- FieldLen: variable
- FieldData: temporal domain.
-
- The message is sent by the Agent/Master to all OID server message
- queues at the start of packet processing and conveys information which
- is does not change during the processing of the current packet.
-
-
- 8.7 Message Type: <mt_OIDServer><OIDGet>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- (repeats n times)
-
- The message is sent by the Agent/Master to get an OID's value.
-
-
- 8.8 Message Type: <mt_OIDServer><OIDGetRsp>
-
- FieldType: <fl_OIDGetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
- FieldType: <fl_OIDGetNextIndex>
- FieldLen: variable
- FieldData: index to error field, if error status
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDGetValue>
- FieldLen: variable
- FieldData: OID value
-
- (repeats n times)
-
- The message sent by the Agent/SubAgentComponent/OIDServer to the
- Agent/Master in response to a <><OIDGet> message.
-
-
- 8.9 Message Type: <mt_OIDServer><OIDGetNext>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- (repeats n times)
-
- The message is sent by the Agent/Master to get the next OID's
- value.
-
-
- 8.10 Message Type: <mt_OIDServer><OIDGetNextRsp>
-
- FieldType: <fl_OIDGetNextStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
- FieldType: <fl_OIDGetNextIndex>
- FieldLen: variable
- FieldData: index to error field, if error status
-
- FieldType: <fl_OIDGetNextOID>
- FieldLen: variable
- FieldData: next OID.
-
- FieldType: <fl_OIDGetNextValue>
- FieldLen: variable
- FieldData: value of next OID.
-
- (last two fields repeat n times)
-
-
- This message is sent in response to a <><OIDGetNext> message,
- returning the next OID and its value, or error.
-
-
-
- <mt_OIDServer><OIDGet>
-
-
-
-
- 8.11 Message Type: <mt_OIDServer><OIDSetGetStateRsp>
-
- FieldType: <fl_OIDSetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
- 2 = read only
-
- FieldType: <fl_OIDValue>
- FieldLen: variable
- FieldData: OID value
-
- (repeats n times)
-
- This message returns the OID's current value, if found and may be
- set. The Agent/Master uses the response to build an undo table
- consisting of the OID, OIDValueCurrent and OIDValueNew for each var in
- the set packet in case of transaction backoff.
-
-
- 8.13 Message Type: <mt_OIDServer><OIDSetPosit>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDToSet>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDValueNew>
- FieldLen: variable
- FieldData: OID value
-
- (<fl_OIDToSet>, <fl_OIDValueCurrent> and <fl_OIDValueNew> repeats
- for n times, where n is the number of entries in the Agent/Master's
- original value table to support undo )
-
- This message is sent by the Agent/Master, for each OID in the
- original OID value table, to a Agent/SubAgentComponent/OIDServer test if
- the value is a proper value. The Agent/SubAgentComponent/OIDServer
- should check the new value of the OID for consistency with: 1) the OID
- itself; 2) all other Set new values in the message; 3) any other system
- states. The Agent/SubAgentComponent/OIDServer should use the
- <><mt_OIDQuery> message to query other Agent/SubAgentComponent/OIDServer
- for values needed during the consistency testing.
-
-
- 8.14 Message Type: <mt_OIDServer><OIDSetPositRsp>
-
- FieldType: <fl_OIDSetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = conflict found
-
- This message is sent by the Agent/SubAgentComponent/OIDServer to
- the Agent/Master after checking for value consistency. If an error is
- returned by any Agent/SubAgentComponent/OIDServer, the
- <><PacketProcessingEnd> message is sent to all
- Agent/SubAgentComponent/OIDServers and an error is reported by the
- Agent/Master to the SNMP packet sender.
-
-
- 8.16 Message Type: <mt_OIDServer><OIDSetCommit>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDValueNew>
- FieldLen: variable
- FieldData: OID new set value for target OID
-
- (last two fields repeat n times)
-
- This message is sent by the Agent/Master to the appropriate
- Agent/SubAgentComponent/OIDServer, after all <><OIDSetPositRsp> messages
- return ok, to set the OID's new value. The Agent/Master sends one
- <><OIDSetCommit> message at a time and awaits a response before sending
- the next.
-
-
- 8.17 Message Type: <mt_OIDServer><OIDSetCommitRsp>
-
- FieldType: <fl_OIDSetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = set failed
-
- This message is sent by the Agent/SubAgentComponent/OIDServer to
- the Agent/Master to report the status of a <><OIDSetCommit> message. If
- the <fl_OIDSetStatus> is ok, Agent/Master sends the <><OIDSetCommit>
- message for the next set OID. If the <fl_OIDSetStatus> is failed,
- Agent/Master sends a <><OIDSetUnDo> message for each OID that has
- already reported an <fl_OIDSetStatus> of ok and set its new value, to
- undo the set (maybe impossible) using the original value table.
-
-
- 8.18 Message Type: <mt_OIDServer><OIDSetUnDo>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDValueNew>
- FieldLen: variable
- FieldData: OID new set value for target OID
-
- This message is sent by the Agent/Master to the appropriate
- Agent/SubAgentComponent/OIDServer, after a failed ><OIDSetCommitRsp>
- message, to attempt to undo a commit. The Agent/Master sends one
- <><OIDSetUnDo> message at a time and awaits a response before sending
- the next.
-
- 8.19 Message Type: <mt_OIDServer><OIDUnDoRsp>
-
- FieldType: <fl_OIDUnDoStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = no undo possible
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDGetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
-
- 8.20 Message Type: <mt_OIDServer><PacketProcessingEnd>
-
- This message is sent by the Agent/Master to all registered
- Agent/SubAgentComponent/OIDServer to indicate the packet context need no
- longer be retained because packet processing is complete.
-
-
-
- 9.0 MCSA Component Dialogue Protocol For OID Query [and Set?]
-
- The purpose of the Component Dialogue Protocol For OID Query and
- [and Set ?] is to allow any Agent/SubAgentComponent to query either an
- intrasystem OID Server or a remote SNMP agent for OID values with either
- a get or getnext request. [If Set were allowed and ICMP query protocol
- were also supported, then an SNMP/MCSA/Agent/SubAgentComponent could be
- a message based SNMP/MCSA/NetworkManagementStation.]
-
-
- 9.1 Message Type: <mt_OIDQuery><OIDIntraSystemGet>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- The message is sent by the Agent/SubAgentComponent to the
- Agent/Master to get an OID's value from among this agent's
- Agent/SubAgentComponent/OIDServers. To limit recursion, the Agent/Master
- allows only n (system dependent) messages of this type to be outstanding
- from an Agent/SubAgentComponent at a time.
-
-
- 9.2 Message Type: <mt_OIDServer><OIDIntraSystemGetRsp>
-
- FieldType: <fl_OIDGetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
- FieldType: <fl_OIDGetValue>
- FieldLen: variable
- FieldData: OID value
-
- The message sent by the Agent/Master to the
- Agent/SubAgentComponent/OIDServer in response to a <><OIDIntraSystemGet>
- message.
-
-
- 9.3 Message Type: <mt_OIDQuery><OIDIntraSystemGetNext>
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- The message is sent by the Agent/SubAgentComponent to the
- Agent/Master to get the next OID's value from among this agent's
- Agent/SubAgentComponent/OIDServers. To limit recursion, the Agent/Master
- allows only n (system dependent) messages of this type to be outstanding
- from an Agent/SubAgentComponent at a time.
-
-
- 9.4 Message Type: <mt_OIDQuery><OIDIntraSystemGetNextRsp>
-
- FieldType: <fl_OIDGetNextStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
- FieldType: <fl_OIDGetNextOID>
- FieldLen: variable
- FieldData: next OID.
-
- FieldType: <fl_OIDGetNextValue>
- FieldLen: variable
- FieldData: value of next OID.
-
- This message is sent in response to a <><OIDInterSystemGetNext>
- message, returning the next OID and its value, or error.
-
-
- 9.5 Message Type: <mt_OIDQuery><OIDInterSystemGet>
-
- FieldType: <fl_IPAdr>
- FieldLen: variable
- FieldData: Remote agent's IP address
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- (last field repeated n times)
-
- The message is sent by the Agent/SubAgentComponent to the
- Agent/Master to get OIDs' value from another snmp agent. To limit
- recursion, the Agent/Master allows only n (system dependent) messages of
- this type to be outstanding from an Agent/SubAgentComponent at a time.
- [this should be handled as a value associated with the resource naming
- and control server.]
-
-
- 9.6 Message Type: <mt_OIDServer><OIDInterSystemGetRsp>
-
- FieldType: <fl_OIDGetStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
- FieldType: <fl_OIDGetStatusIndex>
- FieldLen: variable
- FieldData: if not found, error index: 1 = first
-
- FieldType: <fl_IPAdr>
- FieldLen: variable
- FieldData: OID
-
- FieldType: <fl_OIDGetValue>
- FieldLen: variable
- FieldData: OID value
-
- (last two fields repeated n times)
-
- The message sent by the Agent/Master to the
- Agent/SubAgentComponent/OIDServer in response to a <><OIDInterSystemGet>
- message.
-
-
- 9.7 Message Type: <mt_OIDQuery><OIDInterSystemGetNext>
-
- FieldType: <fl_IPAdr>
- FieldLen: variable
- FieldData: Remote agent's IP address
-
- FieldType: <fl_OIDRequested>
- FieldLen: variable
- FieldData: OID
-
- (last field repeated n times)
-
-
-
- The message is sent by the Agent/SubAgentComponent to the
- Agent/Master to get the next OID's value from another system. To limit
- recursion, the Agent/Master allows only n (system dependent) messages of
- this type to be outstanding from an Agent/SubAgentComponent at a time.
-
-
- 9.8 Message Type: <mt_OIDQuery><OIDInterSystemGetNextRsp>
-
- FieldType: <fl_OIDGetNextStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not found
-
- FieldType: <fl_OIDGetNextStatusIndex>
- FieldLen: variable
- FieldData: if not found, error index: 1 = first
-
- FieldType: <fl_OIDGetNextOID>
- FieldLen: variable
- FieldData: next OID.
-
- FieldType: <fl_OIDGetNextValue>
- FieldLen: variable
- FieldData: value of next OID.
-
- (last two fields repeated n times)
-
- This message is sent in response to a <><OIDInterSystemGetNext>
- message, returning the next OID and its value, or error.
-
-
-
-
- 10.0 MCSA Component Dialogue Protocol For Traps
-
- This Component Dialogue Protocol defines the message exchange to
- allow any Agent/SubAgentComponent to send a trap through the
- Agent/Master.
-
- 10.1 Message Type: <mt_Trap><Send>
-
- The message sent by the Agent/SubAgentComponent/OIDServer to the
- Agent/Master requesting a trap be sent.
-
- FieldType: <fl_TrapPacket>
- FieldLen: variable
- FieldData: SNMP trap packet
-
- 10.2 Message Type: <mt_Trap><SendRsp>
-
- The message sent by the Agent/Master to
- Agent/SubAgentComponent/OIDServer responding to the <><Send> message.
-
- FieldType: <fl_TrapStatus>
- FieldLen: <variable>
- FieldData: 0 = trap sent;
- 1 = declined (syntax error)
- 2 = declined (not allowed)
-
- FieldType: <fl_TrapErrorOffset>
- FieldLen: <variable>
- FieldData: offset to error from <fl_TrapPacket>
-
- FieldType: <fl_TrapPacket>
- FieldLen: variable
- FieldData: SNMP trap packet
-
- 11.0 MCSA Component Dialogue Protocol For Packet Header
-
- This Component Dialogue Protocol defines the message exchange
- between the Agent/Master and a Agent/SubAgentComponent/MsgQServer for
- obtaining SNMP packet header information. of the packet currently being
- processed or last one processed.
-
-
- 11.1 Message Type: <mt_PacketHeader><Get>
-
- The message sent by the Agent/SubAgentComponent/OIDServer to the
- Agent/Master requesting the header of the last packet received.
-
-
- 11.2 Message Type:<mt_PacketHeader><GetRsp>
-
- The message sent by the Agent/Master to
- Agent/SubAgentComponent/OIDServer responding to the header request.
-
- FieldType: <fl_GetStatus>
- FieldLen: 2
- FieldData: BYTE byte_1 = 0 if ok, 1 = no packet received.
- BYTE byte_2 = 0 if processing packet; 1 = if
- old packet
-
- FieldType: <fl_GetHeader>
- FieldLen: variable
- FieldData: SNMP packet header
-
-
- 12.0 MCSA Component Dialogue Protocol For Agent/Master/Servers
-
- The Agent/Master is itself extensible by adding to the system
- Agent/Master/Server components, a type of Agent/SubAgentComponent, that
- processes types of messages from the Agent/Master's message queue on
- behalf of the Agent/Master. An Agent/Master/Server component does this
- by registering with the Agent/Master a set of message types it supports
- for the Agent/Master message queue. When an Agent/Master/Server
- component registers with the Agent/Master, the message types are linked
- to the QID of the Agent/Master/Server. Later, the Agent/Master forwards
- to the Agent/Master/Server's own message queue any Agent/Master message
- queue message with the message types registered by the
- Agent/Master/Server component.
-
- The primary function of Agent/Master/Server components is to allow
- the Agent/Master to expand its capabilities as a correspondent in new
- Component Dialogue Message Protocols without replacing the original
- Agent/Master. This supports new Agent/SubAgentComponent classes that
- require Agent/Master participation in the new Component Dialogue Message
- Protocol whose context it maintains. The Agent/Master/Server's access to
- the Agent/Master's context is by message.
-
- The combination of dynamic message type definition with extensible
- Agent/Master/Server and Agent/SubAgentComponents allows for full agent
- extensibility as well as migration from Ad Hoc to RFC defined protocols.
-
- The following message definitions include only those fields that
- are not required in every message.
-
-
- 12.1 Message Type: <mt_MasterMessageServer><RegisterType>
-
- FieldType: <fl_Message_Type>
- FieldLen: variable
- FieldData: a message type to be supported by the source QID.
-
- (repeated n times)
-
- This message is sent by an Agent/Master/Server to the Agent/Master
- to register a message type of the Agent/Master's message queue that is
- serviced by the source QID. The complete list may be in one or more
- messages. The end of item list is indicated by a null message type in
- the last message. The message type registration must be executed by a
- single list. The sending of a subsequent list unregisters the message
- types of the previous list. The sending of a null list unregisters all
- registered message types for source QID without registering any new
- message type.
-
-
- 12.2 Message Type: <mt_MasterMessageServer><RegisterTypeRsp>
-
- FieldType: <fl_Message_Type_Rsp>
- FieldLen: variable
- FieldData: response (0 if the complete list is accepted;
- else, if the list is rejected, the first
- message type rejected.)
-
-
- 13.0 MCSA Component Dialogue Protocol Traps
-
- The purpose of the Component Dialogue Protocol For Traps is to
- allow SNMP/MCSA/Agent/SubAgentComponens to send traps.
-
-
- 13.1 Message Type: <mt_Traps><TrapSend>
-
- FieldType: <fl_IPAdr>
- FieldLen: variable
- FieldData: Remote agent's IP address
-
- (repeated 0-n times)
-
-
- FieldType: <fl_TrapMsg>
- FieldLen: variable
- FieldData: encapsilated message
-
-
- FieldType: <fl_IPAdr>
- FieldLen: variable
- FieldData: Remote agent's IP address
-
- (repeated 0-n times)
-
-
- This message is sent by an Agent/SAC to the Agent/Master to send a
- trap message. One or more <fl_IPAdr> fields are present, they can appear
- both before and after the <fl_TrapMsg>.
-
-
-
- 13.2 Message Type: <mt_Traps><TrapSendRsp>
-
-
- FieldType: <fl_OIDGetNextStatus>
- FieldLen: variable
- FieldData: return status 0 = ok;
- 1 = not sent
-
-
- FieldType: <fl_IPAdr>
- FieldLen: variable
- FieldData: Remote agent's IP address
-
- (repeated n times)
-
-
-
-
-
-
- 14.0 Contributors To This Document
-
- While Bill White is the principal author of this draft, it is a
- work of many. All those below have contributed to the document. Any
- errors in the document are their fault entirely.
-
-
- Anonymous
-
- Carl Auerback
-
- Larry Backman, FTP
-
- Roger Booth, Network Managers, Ltd
-
- Andy Bierman, Synoptics
-
- Geoff Carpenter, IBM
-
- Alexander Dupuy
-
- Truong Huy, Tandem
-
- Dave Meldrum, Sybase
-
- Bob Natale, American Compuper
-
- David Perkins, Bay Networks
-
- Sudhie Pendse
-
- Randy Presuhn, Peer Networks
-
- Mary Quinn, FTP
-
- Alex Romanov, Paul Freeman Associates
-
- Tim Salmon
-
- Cindy Schlener, DEC
-
- Reuben D. Sivan, Multiport Corp
-
- Timon Sloane
-
- Henry Teng, DEC
-
- Jim West, MQXM Corporation
-
- Bill White, Westford Systems, Inc
-
- Bert Wijen
-
- Pete Wilson, Paul Freeman Associates
-
- Carl Wohlforth, Novell
-